SQL存储过程分页与游标使用 | 您所在的位置:网站首页 › 游标分页 oracle › SQL存储过程分页与游标使用 |
存储过程:
CREATE procedure p_splitpage @sql nvarchar(4000), --要执行的sql语句
@page int=1, --要显示的页码 @pageSize int, --每页的大小 @pageCount int=0 out, --总页数 @recordCount int=0 out --总记录数
as set nocount on declare @p1 int exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output set @recordCount = @pageCount select @pagecount=ceiling(1.0*@pagecount/@pagesize) ,@page=(@page-1)*@pagesize+1 exec sp_cursorfetch @p1,16,@page,@pagesize exec sp_cursorclose @p1 GO ASP页面的内容:
sql = "Select id, c_s_name from tabNews where deleted1 Order By id Desc" page = cint(page_get) if page_post""then page = cint(page_post) end if if not page > 0 then page = 1 end if pagesize=20’每页的条数
set cmd = server.CreateObject("adodb.command") cmd.ActiveConnection = conn cmd.CommandType = 4 cmd.CommandText = "p_SplitPage" cmd.Parameters.Append cmd.CreateParameter("@sql",8,1, 4000, sql) cmd.Parameters.Append cmd.CreateParameter("@page",4,1, 4, page) cmd.Parameters.Append cmd.CreateParameter("@pageSize",4,1, 4, pageSize) cmd.Parameters.Append cmd.CreateParameter("@pageCount",4,2, 4, pageCount) cmd.Parameters.Append cmd.CreateParameter("@recordCount",4,2, 4, recordCount) set rs = cmd.Execute set rs = rs.NextRecordSet pageCount = cmd.Parameters("@pageCount").value recordCount = cmd.Parameters("@recordCount").value if pageCount = 0 then pageCount = 1 if page>pageCount then response.Redirect("?page="&pageCount) end if
set rs = cmd.Execute 游标使用: 使用游标的顺序:声名游标、打开游标、读取数据、关闭游标、删除游标 CREATE PROCEDURE PK_Test AS --声明个变量 declare @O_ID nvarchar(20) declare @A_Salary float --声明一个游标mycursor, declare mycursor cursor for select O_ID,A_Salary from AddSalary
--打开游标 open mycursor
--从游标里取出数据(select语句中参数的个数必须要和从游标取出的变量名相同)赋值到我们刚才声明的个变量中 fetch next from mycursor into @O_ID,@A_Salary
/*//判断游标的状态 //0 fetch语句成功 //-1 fetch语句失败或此行不在结果集中 //-2被提取的行不存在*/
--循环一次次读取游标,得到@O_ID,@A_Salary的值 while (@@fetch_status=0)
--开始读执 begin
--将@O_ID,@A_Salary 当做一个已知量,随便使用。 --显示出我们每次用游标取出的值 print '游标成功取出一条数据' print @O_ID print @A_Salary
--用游标去取下一条记录 fetch next from mycursor into @O_ID,@A_Salary end
--关闭游标 close mycursor --撤销游标 deallocate mycursor GO |
CopyRight 2018-2019 实验室设备网 版权所有 |